import tkinter as tk
import qrcode

import os

# 确保 "codeFile" 文件夹存在，如果不存在则创建
output_folder = "codeFile"
os.makedirs(output_folder, exist_ok=True)
start_str = ''


# start_str = 'JZ+917' # 二维码数字前缀需要 默认为 ''

class QRCodeGeneratorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("数字二维码生成器")

        # 设置窗口大小
        self.root.geometry("400x200")

        self.label = tk.Label(root, text="请输入起始数字:")
        self.label.pack()

        self.entry = tk.Entry(root)
        self.entry.pack()

        # 添加一个输入框来接受生成的二维码数量
        self.quantity_label = tk.Label(root, text="生成的二维码数量:")
        self.quantity_label.pack()

        self.quantity_entry = tk.Entry(root)
        self.quantity_entry.pack()

        self.button = tk.Button(root, text="生成二维码", command=self.generate_qrcodes)
        self.button.pack()

        # 添加一个关于按钮
        self.about_button = tk.Button(root, text="关于", command=self.show_about_dialog)
        self.about_button.pack()

    def generate_qrcodes(self):
        start_number = int(self.entry.get())
        quantity = int(self.quantity_entry.get())  # 获取生成的二维码数量

        for i in range(quantity):  # 根据输入的数量生成二维码
            data = f"{start_str}{start_number + i}"
            qr = qrcode.QRCode(
                version=None,  # 让qrcode库自动选择版本号
                error_correction=qrcode.constants.ERROR_CORRECT_L,
                box_size=10,
                border=4,
            )
            qr.add_data(data)
            qr.make(fit=True)
            img = qr.make_image(fill_color="black", back_color="white")
            # img.save(f"{start_number + i}.png")  #
            # 假设 img 是你的二维码图像对象，start_number 和 i 是你的索引变量 保存二维码到文件
            img.save(os.path.join(output_folder, f"{start_str}{start_number + i}.png"))

        self.label.config(text="二维码生成完成！")

    def show_about_dialog(self):
        about_text = """\
        二维码生成器  

        这个应用程序用于批量生成二维码。
        您可以输入起始数字和生成的数量来自定义二维码的内容和数量。
        也可以在前面加上一些前缀，生成的数据也就是自己的文件名称。
        

        例如1：  不设置 start_str 
                数字开始时 1123456
                生成 2 个 ：  那么生成的二维码内容和文件名称为 ：   1123456 1123457
                
             
        例如2： 在文件数据 start_str 设置一个   ABC- 
                然后数字开始为： 1000
                生成 2 个 ：  生成2个： 那么生成的二维码内容和文件名称为  ： ABC-1000  ABC-1001
        """

        # 创建一个新的顶级窗口来显示关于信息
        about_window = tk.Toplevel(self.root)
        about_window.title("关于")

        # 创建一个文本框来显示关于信息
        about_label = tk.Label(about_window, text=about_text, padx=20, pady=20)
        about_label.pack()


if __name__ == "__main__":
    root = tk.Tk()
    app = QRCodeGeneratorApp(root)
    root.mainloop()
